package tp1
import scala.collection.mutable.Map
import java.util.GregorianCalendar
import scala.collection.mutable.ArrayBuffer


class Grupo (cantIntegrantes:Int){
	var integrantes = new ArrayBuffer[Persona]
	var actividades = new ArrayBuffer[Actividad]
	
	
	def agregarIntegrante(persona: Persona){
	  this.integrantes += persona
	}
	
	def agregarActividad(nuevaActividad:Actividad){
	  this.actividades += nuevaActividad
	}
	
	def actividadesPendientesDeAprobacion: ArrayBuffer[(Actividad,Int)] ={
	  var actividadesP = new ArrayBuffer[(Actividad,Int)]()
	  this.actividades foreach{ act => if(act.fechaAprobacion == null){
	    var tupla = (act,act.monto)
	    actividadesP += tupla}
	  }
	  actividadesP
	}
	
	def articulosPublicadosConFecha(): ArrayBuffer[(String,GregorianCalendar)] ={
	  
	  var articulosPublicados = new ArrayBuffer[(String,GregorianCalendar)]()
	  this.actividades foreach{act => if(act.tieneArticulos){
	    articulosPublicados++= act.articulos()
	  	}
	  }
	  
	  articulosPublicados
	}
	
	def agendaDeEventosDe(integrante: Persona): ArrayBuffer[String]={		
			
	  var agenda = new ArrayBuffer[String]()
	  this.actividades foreach{act =>
	  if(this.estaComoIntegrante(integrante, act) || act.responsable.eq(integrante)){
	    agenda += act.informacion
	  	}
	  }
	  
	  agenda
	}

	def estaComoIntegrante(persona: Persona, actividad: Actividad):Boolean ={
		actividad.integrantes contains persona
	}
	
//	//Solo para fines de testing
//    def printmap(mapa:Map[Int,Map[Actividad,Int]]){
//     mapa.keys.foreach{i =>
//        print("ActividadNro: "+i)
//        var submapa = mapa(i)
//        submapa.keys.foreach{ i =>
//          print (" Nombre: "+ i.a_nombre)
//          println (" Monto: "+submapa(i))
//        }
//     }
//     
//   }
//    
//    def printMapACF(mapa:Map[String, GregorianCalendar]){
//      mapa.keys.foreach{i =>
//        print("Nombre Articulo: "+i)
//        println(" Fecha: "+mapa(i).getTime())
//      }
//    }
//    
//    
//    def printMapADE(mapa:Map[Persona, List[Actividad]]){
//      mapa.keys.foreach{i =>
//        println("Actividades de: "+i.p_nombre+" "+i.p_apellido)
//        var listTemp = mapa(i) 
//        while(listTemp!=Nil){
//        	println("Nombre Actividad: "+listTemp.head.a_nombre+"")
//        	listTemp.head.printData
//        	println()
//        	listTemp = listTemp.tail
//        }
//      }
//    }
}